{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### RBF核SVM参数调优\n",
    "采用PCA降维后的tfidf数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from matplotlib import pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "准备数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "dpath = './data/'\n",
    "train = pd.read_csv(dpath+'Otto_train_tfidf_pca.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>pca0</th>\n",
       "      <th>pca1</th>\n",
       "      <th>pca2</th>\n",
       "      <th>pca3</th>\n",
       "      <th>pca4</th>\n",
       "      <th>pca5</th>\n",
       "      <th>pca6</th>\n",
       "      <th>pca7</th>\n",
       "      <th>pca8</th>\n",
       "      <th>...</th>\n",
       "      <th>pca39</th>\n",
       "      <th>pca40</th>\n",
       "      <th>pca41</th>\n",
       "      <th>pca42</th>\n",
       "      <th>pca43</th>\n",
       "      <th>pca44</th>\n",
       "      <th>pca45</th>\n",
       "      <th>pca46</th>\n",
       "      <th>pca47</th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>-0.230033</td>\n",
       "      <td>0.067735</td>\n",
       "      <td>-0.200102</td>\n",
       "      <td>-0.276508</td>\n",
       "      <td>-0.485227</td>\n",
       "      <td>0.391621</td>\n",
       "      <td>0.119618</td>\n",
       "      <td>-0.235460</td>\n",
       "      <td>-0.075811</td>\n",
       "      <td>...</td>\n",
       "      <td>0.048223</td>\n",
       "      <td>-0.078506</td>\n",
       "      <td>0.000444</td>\n",
       "      <td>0.088212</td>\n",
       "      <td>0.056207</td>\n",
       "      <td>0.050206</td>\n",
       "      <td>-0.018651</td>\n",
       "      <td>-0.012860</td>\n",
       "      <td>-0.033993</td>\n",
       "      <td>Class_1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>-0.165825</td>\n",
       "      <td>0.190047</td>\n",
       "      <td>-0.085411</td>\n",
       "      <td>-0.021620</td>\n",
       "      <td>-0.041540</td>\n",
       "      <td>-0.162239</td>\n",
       "      <td>0.014200</td>\n",
       "      <td>0.114020</td>\n",
       "      <td>-0.082616</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.122045</td>\n",
       "      <td>0.135781</td>\n",
       "      <td>-0.214742</td>\n",
       "      <td>0.065962</td>\n",
       "      <td>0.212053</td>\n",
       "      <td>-0.090437</td>\n",
       "      <td>-0.021293</td>\n",
       "      <td>-0.083192</td>\n",
       "      <td>0.211994</td>\n",
       "      <td>Class_1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>-0.040203</td>\n",
       "      <td>0.289302</td>\n",
       "      <td>-0.109865</td>\n",
       "      <td>-0.117562</td>\n",
       "      <td>-0.157621</td>\n",
       "      <td>-0.174803</td>\n",
       "      <td>-0.336212</td>\n",
       "      <td>-0.195427</td>\n",
       "      <td>0.160062</td>\n",
       "      <td>...</td>\n",
       "      <td>0.006395</td>\n",
       "      <td>0.101072</td>\n",
       "      <td>-0.057329</td>\n",
       "      <td>-0.125129</td>\n",
       "      <td>0.127905</td>\n",
       "      <td>0.019454</td>\n",
       "      <td>0.024437</td>\n",
       "      <td>-0.070221</td>\n",
       "      <td>0.075631</td>\n",
       "      <td>Class_1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>-0.121822</td>\n",
       "      <td>0.068306</td>\n",
       "      <td>-0.024844</td>\n",
       "      <td>-0.031293</td>\n",
       "      <td>0.013067</td>\n",
       "      <td>-0.112368</td>\n",
       "      <td>0.049243</td>\n",
       "      <td>0.034076</td>\n",
       "      <td>-0.067092</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.005219</td>\n",
       "      <td>0.005743</td>\n",
       "      <td>0.002918</td>\n",
       "      <td>-0.031549</td>\n",
       "      <td>0.011688</td>\n",
       "      <td>-0.003040</td>\n",
       "      <td>-0.002959</td>\n",
       "      <td>-0.007025</td>\n",
       "      <td>-0.003449</td>\n",
       "      <td>Class_1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>-0.127224</td>\n",
       "      <td>0.126973</td>\n",
       "      <td>-0.016796</td>\n",
       "      <td>-0.134441</td>\n",
       "      <td>-0.063135</td>\n",
       "      <td>-0.185726</td>\n",
       "      <td>0.027807</td>\n",
       "      <td>0.099285</td>\n",
       "      <td>0.045462</td>\n",
       "      <td>...</td>\n",
       "      <td>0.167076</td>\n",
       "      <td>0.116967</td>\n",
       "      <td>0.077692</td>\n",
       "      <td>0.234487</td>\n",
       "      <td>0.272050</td>\n",
       "      <td>0.069280</td>\n",
       "      <td>0.284079</td>\n",
       "      <td>0.275134</td>\n",
       "      <td>-0.066717</td>\n",
       "      <td>Class_1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 50 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   id      pca0      pca1      pca2      pca3      pca4      pca5      pca6  \\\n",
       "0   1 -0.230033  0.067735 -0.200102 -0.276508 -0.485227  0.391621  0.119618   \n",
       "1   2 -0.165825  0.190047 -0.085411 -0.021620 -0.041540 -0.162239  0.014200   \n",
       "2   3 -0.040203  0.289302 -0.109865 -0.117562 -0.157621 -0.174803 -0.336212   \n",
       "3   4 -0.121822  0.068306 -0.024844 -0.031293  0.013067 -0.112368  0.049243   \n",
       "4   5 -0.127224  0.126973 -0.016796 -0.134441 -0.063135 -0.185726  0.027807   \n",
       "\n",
       "       pca7      pca8   ...        pca39     pca40     pca41     pca42  \\\n",
       "0 -0.235460 -0.075811   ...     0.048223 -0.078506  0.000444  0.088212   \n",
       "1  0.114020 -0.082616   ...    -0.122045  0.135781 -0.214742  0.065962   \n",
       "2 -0.195427  0.160062   ...     0.006395  0.101072 -0.057329 -0.125129   \n",
       "3  0.034076 -0.067092   ...    -0.005219  0.005743  0.002918 -0.031549   \n",
       "4  0.099285  0.045462   ...     0.167076  0.116967  0.077692  0.234487   \n",
       "\n",
       "      pca43     pca44     pca45     pca46     pca47   target  \n",
       "0  0.056207  0.050206 -0.018651 -0.012860 -0.033993  Class_1  \n",
       "1  0.212053 -0.090437 -0.021293 -0.083192  0.211994  Class_1  \n",
       "2  0.127905  0.019454  0.024437 -0.070221  0.075631  Class_1  \n",
       "3  0.011688 -0.003040 -0.002959 -0.007025 -0.003449  Class_1  \n",
       "4  0.272050  0.069280  0.284079  0.275134 -0.066717  Class_1  \n",
       "\n",
       "[5 rows x 50 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = train.iloc[:,1:48]\n",
    "y = train['target']\n",
    "feat_names = X.columns\n",
    "from scipy.sparse import csr_matrix\n",
    "X = csr_matrix(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "#抽取10000个样本进行训练，8000个训练，2000个验证\n",
    "from sklearn.model_selection import train_test_split\n",
    "X_train,X_val,y_train,y_val = train_test_split(X,y,train_size=8000,test_size=2000,random_state=6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((8000, 47), (2000, 47))"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.shape,X_val.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "模型训练，调整C和gamma"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import SVC\n",
    "def grid_param(C,gamma,X_train,y_train,X_val,y_val):\n",
    "    svc2 = SVC(C=C,kernel='rbf',gamma=gamma)\n",
    "    svc2.fit(X_train,y_train)\n",
    "    accuracy = svc2.score(X_val,y_val)\n",
    "    print(\"C={}:gamma={}:accuracy={}\".format(C,gamma,accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "C=0.01:gamma=1e-05:accuracy=0.2735\n",
      "C=0.01:gamma=0.0001:accuracy=0.2735\n",
      "C=0.01:gamma=0.001:accuracy=0.2735\n",
      "C=0.01:gamma=0.01:accuracy=0.2735\n",
      "C=0.1:gamma=1e-05:accuracy=0.2735\n",
      "C=0.1:gamma=0.0001:accuracy=0.2735\n",
      "C=0.1:gamma=0.001:accuracy=0.2735\n",
      "C=0.1:gamma=0.01:accuracy=0.478\n",
      "C=1.0:gamma=1e-05:accuracy=0.2735\n",
      "C=1.0:gamma=0.0001:accuracy=0.2735\n",
      "C=1.0:gamma=0.001:accuracy=0.4785\n",
      "C=1.0:gamma=0.01:accuracy=0.715\n",
      "C=10.0:gamma=1e-05:accuracy=0.2735\n",
      "C=10.0:gamma=0.0001:accuracy=0.4785\n",
      "C=10.0:gamma=0.001:accuracy=0.715\n",
      "C=10.0:gamma=0.01:accuracy=0.737\n",
      "C=100.0:gamma=1e-05:accuracy=0.4785\n",
      "C=100.0:gamma=0.0001:accuracy=0.715\n",
      "C=100.0:gamma=0.001:accuracy=0.7365\n",
      "C=100.0:gamma=0.01:accuracy=0.745\n"
     ]
    }
   ],
   "source": [
    "Cs = np.logspace(-2,2,5)\n",
    "gammas = np.logspace(-5,-2,4)\n",
    "accuracys = np.matrix(np.zeros((len(Cs),len(gammas))),float)\n",
    "for i,c in enumerate(Cs):\n",
    "    for j,g in enumerate(gammas):\n",
    "        accuracys[i,j] = grid_param(c,g,X_train,y_train,X_val,y_val)   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "axis_x = np.log10(Cs)\n",
    "for j,g in enumerate(gammas):\n",
    "    plt.plot(axis_x,accuracys[:,j],label = \"gamma\"+str(np.log10(g)))\n",
    "axis_x = np.log10(Cs)\n",
    "plt.plot(axis_x,accuracys)\n",
    "\n",
    "plt.legend()\n",
    "plt.xlabel('log(C)')\n",
    "plt.ylabel('accuracy')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 问题4解答：    \n",
    "和用原始数据相比，accuracy随参数的变化趋势基本相同，accuracy略微有所下降  \n",
    "说明PCA降维保留了原始数据大部分信息"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
